const { verifyToken } = require('../utils/tokenUtils')
const { RES_CODE } = require("../utils/constants")
/* 
整合处理token的中间件函数  用于token校验的中间件
*/
module.exports = async (req, res, next) => {

  if (req.method==='OPTIONS') {
    next()
    return
  }


  try {
    // 得到请求头中的token
    const token = req.headers['token']
    // 对token进行校验
    const userId = await verifyToken(token)
    req.userId = userId
    next() // 放行请求 是为了后面的路由能够执行  路由本质上也是中间件
  } catch (error) {
    console.log(error); // 排错用
    // 失败  返回一个401的错误响应
    res.statusCode = 401
    // res.send 和 res.json效果一样
    res.send({
      code: RES_CODE.ERROR,
      message: error.message
    })
  }
}
